package com.qiangesoft.rdp.starter.minio.config;

import com.qiangesoft.rdp.starter.minio.bucket.BucketAccessPolicyEnum;
import com.qiangesoft.rdp.starter.minio.core.StoreModeEnum;
import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;

import java.util.List;

/**
 * 读取项目文件配置
 *
 * @author qiangesoft
 */
@Data
@Component
@ConfigurationProperties(prefix = "rdp.minio")
public class MinioProperties {

    /**
     * 服务地址
     */
    private String endpoint = "http://127.0.0.1/9000/";

    /**
     * 地区
     */
    private String region;

    /**
     * 认证账户
     */
    private String accessKey;

    /**
     * 认证密码
     */
    private String secretKey;

    /**
     * 全局文件存储模式
     */
    private StoreModeEnum store = StoreModeEnum.DAY;

    /**
     * 默认桶访问权限
     */
    private BucketAccessPolicyEnum access = BucketAccessPolicyEnum.READ_WRITE;

    /**
     * 设置HTTP连接、写入和读取超时。值为0意味着没有超时
     * HTTP连接超时，以毫秒为单位。
     */
    private long connectTimeout = 6000;

    /**
     * 设置HTTP连接、写入和读取超时。值为0意味着没有超时
     * HTTP写超时，以毫秒为单位。
     */
    private long writeTimeout = 2000;

    /**
     * 设置HTTP连接、写入和读取超时。值为0意味着没有超时
     * HTTP读取超时，以毫秒为单位。
     */
    private long readTimeout = 2000;

    /**
     * 桶列表
     */
    private List<Bucket> buckets;

    /**
     * 桶
     */
    @Data
    public static class Bucket {
        /**
         * 桶名称
         */
        private String name;

        /**
         * 桶访问权限
         */
        private BucketAccessPolicyEnum access = BucketAccessPolicyEnum.WRITE;

        /**
         * 是否默认
         */
        private Boolean isDefault = false;
    }
}
